package Q16_04_Tic_Tac_Win;
import CtCILibrary.AssortedMethods;
public class QuestionE {
public static Piece hasWon(Piece[][] board) {
int size = board.length;
if (board[0].length != size) return Piece.Empty;
Piece first;
/* Check rows. */
for (int i = 0; i < size; i++) {
first = board[i][0];
if (first == Piece.Empty) continue;
for (int j = 1; j < size; j++) {
if (board[i][j] != first) {
break;
} else if (j == size - 1) {
return first;
}
}
}
/* Check columns. */
for (int i = 0; i < size; i++) {
first = board[0][i];
if (first == Piece.Empty) continue;
for (int j = 1; j < size; j++) {
if (board[j][i] != first) {
break;
} else if (j == size - 1) {
return first;
}
}
}
/* Check diagonals. */
first = board[0][0];
if (first != Piece.Empty) {
for (int i = 1; i < size; i++) {
if (board[i][i] != first) {
break;
} else if (i == size - 1) {
return first;
}
}
}
first = board[0][size - 1];
if (first != Piece.Empty) {
for (int i = 1; i < size; i++) {
if (board[i][size - i - 1] != first) {
break;
} else if (i == size - 1) {
return first;
}
}
}
return Piece.Empty;
}
public static void main(String[] args) {
int N = 3;
int[][] board_t = AssortedMethods.randomMatrix(N, N, 0, 2);
Piece[][] board = new Piece[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
int x = board_t[i][j];
board[i][j] = Tester.convertIntToPiece(x);
}
}
Piece p1 = hasWon(board);
System.out.println(p1);
AssortedMethods.printMatrix(board_t);
}
}